package com.cms.recursoshumanos.json.object;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import com.cms.recursoshumanos.cache.ListaOcioCache;
import com.cms.recursoshumanos.constant.Constant;
import com.cms.recursoshumanos.object.Ocio;
import com.cms.recursoshumanos.object.Sede;
import com.cms.recursoshumanos.object.list.ListaOcio;
import com.cms.recursoshumanos.utilities.Tool;


public class JsonObjectGetEstablecimientosOcio 
{

	private static JsonObjectGetEstablecimientosOcio _instance = null;
	public static JsonObjectGetEstablecimientosOcio getInstance() {
		if(_instance == null)
			_instance = new JsonObjectGetEstablecimientosOcio();
		
		return _instance;
	}
	private String Result;
	public JsonObjectGetEstablecimientosOcio()
	{
	}
	private static final String
	
		GETESTABLECIMIENTOSOCIO = "GETESTABLECIMIENTOSOCIO",
		GETESTABLECIMIENTOSOCIO_STATUS = "STATUS",
		GETESTABLECIMIENTOSOCIO_DATA = "DATA",
		GETESTABLECIMIENTOSOCIO_DATOS_OCIO = "DATOS_OCIO",
	
		GETESTABLECIMIENTOSOCIO_OCIO_ID = "ocio_id",
		GETESTABLECIMIENTOSOCIO_RIF_OCIO = "rif_ocio",
		GETESTABLECIMIENTOSOCIO_NOMBRE_OCIO = "nombre_ocio",
		GETESTABLECIMIENTOSOCIO_DESCRIPCION_OCIO = "descripcion_ocio",
		GETESTABLECIMIENTOSOCIO_HORARIO_INIC = "horario_inic",
		GETESTABLECIMIENTOSOCIO_HORARIO_FIN = "horario_fin",
		GETESTABLECIMIENTOSOCIO_FECHA_INIC = "fecha_inic",
		GETESTABLECIMIENTOSOCIO_FECHA_FIN = "fecha_fin",
		GETESTABLECIMIENTOSOCIO_STATUS_OCIO = "status_ocio",
		GETESTABLECIMIENTOSOCIO_NRO_TLF_OCIO_1 = "nro_tlf_ocio_1",
		GETESTABLECIMIENTOSOCIO_NRO_TLF_OCIO_2 = "nro_tlf_ocio_2",
		GETESTABLECIMIENTOSOCIO_EMAIL = "email_ocio",

		GETESTABLECIMIENTOSOCIO_SEDE_ID = "sede_id",
		GETESTABLECIMIENTOSOCIO_NOMBRE_SEDE = "nombre_sede";

	
	
	
	public void fromJSON (String jsonString) 
	{
		if (jsonString != null)
		{
			if (!jsonString.equals(""))
			{
				try
				{
					JSONObject jsonObject = new JSONObject(jsonString);
					JSONObject getOcio = jsonObject.getJSONArray(GETESTABLECIMIENTOSOCIO).getJSONObject(0);
					String status = getOcio.getString(GETESTABLECIMIENTOSOCIO_STATUS);
					
					Result = status;
					
					if (status.equals(Constant.CODE_OK))
					{
						
						JSONArray data = getOcio.getJSONArray(GETESTABLECIMIENTOSOCIO_DATA);
						
						JSONObject objeto_data = data.getJSONObject(0);
						JSONArray datos_ocio = objeto_data.getJSONArray(GETESTABLECIMIENTOSOCIO_DATOS_OCIO);
		
						ListaOcio listado = new ListaOcio();
						
						for (int i = 0; i < datos_ocio.length(); i++ )
						{
							
								JSONObject json_ocio = datos_ocio.getJSONObject(i);
								
								listado.addOcio(getElOcio(json_ocio));
									
						}
						ListaOcioCache.getInstance().setFechaCache();
						ListaOcioCache.getInstance().setListaEvento(listado);
						
					}
					
				} 
				catch (JSONException ex) 
				{
					ex.printStackTrace();
					Result = Constant.CODE_EMPTY;
	
				}
	
				/*catch (Exception ex) 
				{
					ex.printStackTrace();
					Result = Constant.CODE_EMPTY;
				}*/
			}
			else
			{
				Result = Constant.CODE_NOT_SERVER_RESPONSE;
			}
		}
		else
		{
			Result = Constant.CODE_NOT_SERVER_RESPONSE;
		}

	}
	
	public Ocio getElOcio(JSONObject json_ocio)
	{
		try 
		{
			
			Ocio elOcio = new Ocio(Integer.parseInt(json_ocio.getString(GETESTABLECIMIENTOSOCIO_OCIO_ID)),
										json_ocio.getString(GETESTABLECIMIENTOSOCIO_NOMBRE_OCIO),
										json_ocio.getString(GETESTABLECIMIENTOSOCIO_RIF_OCIO),
										json_ocio.getString(GETESTABLECIMIENTOSOCIO_HORARIO_INIC),
										json_ocio.getString(GETESTABLECIMIENTOSOCIO_HORARIO_FIN),
										(json_ocio.getString(GETESTABLECIMIENTOSOCIO_DESCRIPCION_OCIO).equals("null") ? 
												null :
										json_ocio.getString(GETESTABLECIMIENTOSOCIO_DESCRIPCION_OCIO)),
										Tool.getInstance().parseStringToDate(json_ocio.getString(GETESTABLECIMIENTOSOCIO_FECHA_INIC)),
										Tool.getInstance().parseStringToDate(json_ocio.getString(GETESTABLECIMIENTOSOCIO_FECHA_FIN)),
										json_ocio.getBoolean(GETESTABLECIMIENTOSOCIO_STATUS_OCIO),
										json_ocio.getString(GETESTABLECIMIENTOSOCIO_NRO_TLF_OCIO_1),
										(json_ocio.getString(GETESTABLECIMIENTOSOCIO_NRO_TLF_OCIO_2).equals("null") ?
												null: 
										json_ocio.getString(GETESTABLECIMIENTOSOCIO_NRO_TLF_OCIO_2)),
										new Sede(Integer.parseInt(json_ocio.getString(GETESTABLECIMIENTOSOCIO_SEDE_ID)),
													json_ocio.getString(GETESTABLECIMIENTOSOCIO_NOMBRE_SEDE)),
										json_ocio.getString(GETESTABLECIMIENTOSOCIO_EMAIL)
									);
			return elOcio;
		} 
		catch (NumberFormatException e) 
		{
			// TODO Auto-generated catch block
			e.printStackTrace();
			return null;
		} 
		catch (JSONException e) 
		{
			// TODO Auto-generated catch block
			e.printStackTrace();
			return null;
		}
		/*catch (Exception e) 
		{
			// TODO Auto-generated catch block
			e.printStackTrace();
			return null;
		}*/
	}
	public String getResult()
	{
		return Result;
	}
	
}



